<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        body,
        html {
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
        #canvas {
            background-color: #000;
        }
    </style>
</head>
<body>
<canvas id='canvas'></canvas>
</body>
</html>

<script>
    function colorMe(h, s, l, a) {
        return 'hsla(' + h + ',' + s + ',' + l + ',' + a + ')';
    }

    var mouse = {
        x: 0,
        y: 0
    };

    function graph(w, h, dc, v) {

        document.addEventListener('mousemove', function(e) {
            mouse.x = e.clientX || e.pageX;
            mouse.y = e.clientY || e.pageY
        }, false);

        dc.clearRect(0, 0, w, h);

        var angle_incr = (2 + (v) / 12.0) * Math.PI / 180,
                cx = w / 2,
                cy = h / 2,
                outer_rad = w / 2;

        for (var i = 1; i <= v; ++i) {
            var op = i > 0 ? (v / i) * 0.0675 : .0675,
                    ratio = i / v,
                    angle = i * angle_incr,
                    fill = colorMe(i, '100%', '67%', op),
                    spiral_rad = ratio * outer_rad,
                    x = cx + Math.cos(angle) * spiral_rad,
                    y = cy + Math.sin(angle) * spiral_rad;

            dc.fillStyle = fill;

            dc.beginPath();
            dc.moveTo(x, y);
            dc.lineTo(mouse.x, mouse.y);
            dc.lineWidth = i / 3;
            dc.strokeStyle = fill;
            dc.stroke();

        }
    }

    function myInit() {
        var w = window,
                e = document.documentElement,
                cnv = document.getElementById('canvas'),
                ctx = cnv.getContext('2d'),
                x = w.innerWidth,
                y = w.innerHeight,
                i = 2,
                ay = 0,
                gogo = false,
                ud = true;

        cnv.width = x;
        cnv.height = y;

        setInterval(function() {

            if (ud) {
                i = i < 360 ? i + 1 : i;
                ud = i > 359 ? false : true;
            }
            if (!ud) {
                i--;
                ud = i < 1 ? true : false;
            }
            graph(x, y, ctx, i);
        }, 10);
    }

    window.onload = function() {
        myInit();
    };
</script>